package block

import (
	"bytes"
	."blockchain.com/part_5/utils"
)

// ---------------交易输出------------

// 四、 （3）交易输出
type TXOutput struct {
	Value 			int// 一定量的比特币
	PubKeyHash		[]byte// 公钥哈希
}

// 四、 （4）输出锁定
func (out *TXOutput)Lock(address []byte)  {
	pubKeyHash := Base58Decode(address)
	pubKeyHash = pubKeyHash[1:len(pubKeyHash)-4]
	out.PubKeyHash = pubKeyHash
}

// 四、 （5）检查是否提供的公钥哈希被用于锁定输出
func (out *TXOutput)IsLockedWithKey(pubKeyHash []byte) bool  {
	return bytes.Compare(out.PubKeyHash,pubKeyHash) == 0
}

// 修改：实现交易输出
func NewTXOutput(value int,address string)*TXOutput  {
	txo := &TXOutput{value,nil}
	txo.Lock([]byte(address))

	return txo
}
